package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.baomidou.mybatisplus.annotation.*;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 项目管理对象 sys_project_management
 * 
 * @author zhaonz
 * @date 2023-06-02
 */
@TableName("sys_project_management")
public class ProjectManagement extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目ID */
    @TableId(type = IdType.ASSIGN_ID)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long projectId;

    /** 项目编号 */
    @Excel(name = "项目编号")
    private String projectNo;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 项目类型 */
    @Excel(name = "项目类型")
    private String projectType;

    /** 项目名称 */
    @Excel(name = "项目来源")
    private String projectSource;

    /** 项目描述 */
    @Excel(name = "项目描述")
    private String projectDescribe;

    /** 项目预算 */
    @Excel(name = "项目预算")
    private BigDecimal projectBudget;

    /** 合同金额 */
    @Excel(name = "合同金额")
    private BigDecimal projectAmount;

    /** 项目进度 */
    @Excel(name = "项目进度")
    private String projectSchedule;

    /** 需求类型 */
    @Excel(name = "需求类型")
    private String requirementType;

    /** 项目调研: 0:否,1:是 */
    @Excel(name = "项目调研: 0:否,1:是")
    private Integer projectResearch;

    @TableField(exist = false)
    private ProjectResearch research;

    /** POC测试: 0:否,1:是 */
    @Excel(name = "POC测试: 0:否,1:是")
    private Integer pocTesting;

    @TableField(exist = false)
    private InviteBids inviteBids;

    @TableField(exist = false)
    private PocTesting testing;

    @TableField(exist = false)
    private List<ProjectSchedule> schedule;

    @TableField(exist = false)
    private String taskId;

    @TableField(exist = false)
    private String procInstId;

    @TableField(exist = false)
    private String assignee;

    @TableField(exist = false)
    private String name;

    @TableField(exist = false)
    private String formKey;

    public Long getProjectId() {
        return projectId;
    }

    public ProjectManagement setProjectId(Long projectId) {
        this.projectId = projectId;
        return this;
    }

    public String getProjectNo() {
        return projectNo;
    }

    public ProjectManagement setProjectNo(String projectNo) {
        this.projectNo = projectNo;
        return this;
    }

    public String getProjectName() {
        return projectName;
    }

    public ProjectManagement setProjectName(String projectName) {
        this.projectName = projectName;
        return this;
    }

    public String getProjectType() {
        return projectType;
    }

    public ProjectManagement setProjectType(String projectType) {
        this.projectType = projectType;
        return this;
    }

    public String getProjectSource() {
        return projectSource;
    }

    public ProjectManagement setProjectSource(String projectSource) {
        this.projectSource = projectSource;
        return this;
    }

    public String getProjectDescribe() {
        return projectDescribe;
    }

    public ProjectManagement setProjectDescribe(String projectDescribe) {
        this.projectDescribe = projectDescribe;
        return this;
    }

    public BigDecimal getProjectBudget() {
        return projectBudget;
    }

    public ProjectManagement setProjectBudget(BigDecimal projectBudget) {
        this.projectBudget = projectBudget;
        return this;
    }

    public BigDecimal getProjectAmount() {
        return projectAmount;
    }

    public ProjectManagement setProjectAmount(BigDecimal projectAmount) {
        this.projectAmount = projectAmount;
        return this;
    }

    public String getProjectSchedule() {
        return projectSchedule;
    }

    public ProjectManagement setProjectSchedule(String projectSchedule) {
        this.projectSchedule = projectSchedule;
        return this;
    }

    public String getRequirementType() {
        return requirementType;
    }

    public ProjectManagement setRequirementType(String requirementType) {
        this.requirementType = requirementType;
        return this;
    }

    public Integer getProjectResearch() {
        return projectResearch;
    }

    public ProjectManagement setProjectResearch(Integer projectResearch) {
        this.projectResearch = projectResearch;
        return this;
    }

    public Integer getPocTesting() {
        return pocTesting;
    }

    public ProjectManagement setPocTesting(Integer pocTesting) {
        this.pocTesting = pocTesting;
        return this;
    }

    public String getTaskId() {
        return taskId;
    }

    public ProjectManagement setTaskId(String taskId) {
        this.taskId = taskId;
        return this;
    }

    public String getProcInstId() {
        return procInstId;
    }

    public ProjectManagement setProcInstId(String procInstId) {
        this.procInstId = procInstId;
        return this;
    }

    public String getAssignee() {
        return assignee;
    }

    public ProjectManagement setAssignee(String assignee) {
        this.assignee = assignee;
        return this;
    }

    public String getName() {
        return name;
    }

    public ProjectManagement setName(String name) {
        this.name = name;
        return this;
    }

    public String getFormKey() {
        return formKey;
    }

    public ProjectManagement setFormKey(String formKey) {
        this.formKey = formKey;
        return this;
    }

    public ProjectResearch getResearch() {
        return research;
    }

    public ProjectManagement setResearch(ProjectResearch research) {
        this.research = research;
        return this;
    }

    public InviteBids getInviteBids() {
        return inviteBids;
    }

    public ProjectManagement setInviteBids(InviteBids inviteBids) {
        this.inviteBids = inviteBids;
        return this;
    }

    public PocTesting getTesting() {
        return testing;
    }

    public ProjectManagement setTesting(PocTesting testing) {
        this.testing = testing;
        return this;
    }

    public List<ProjectSchedule> getSchedule() {
        return schedule;
    }

    public ProjectManagement setSchedule(List<ProjectSchedule> schedule) {
        this.schedule = schedule;
        return this;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("projectId", getProjectId())
            .append("projectNo", getProjectNo())
            .append("projectName", getProjectName())
            .append("projectType", getProjectType())
            .append("projectSource", getProjectSource())
            .append("projectDescribe", getProjectDescribe())
            .append("projectBudget", getProjectBudget())
            .append("projectAmount", getProjectAmount())
            .append("projectSchedule", getProjectSchedule())
            .append("requirementType", getRequirementType())
            .append("projectResearch", getProjectResearch())
            .append("pocTesting", getPocTesting())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
